home *** CD-ROM | disk | FTP | other *** search
Wrap
/* Programm: PlayCDDA_JB.dopus5 [1-Januar-1996] ** $VER: PlayCDDA_JB.dopus5 1.5 (1-Jan-1996) ** ** Needed: Directory Opus 5.11 (© by Jonathan Potter & GPSoftware) ** Jukebox 2.1 (© 1991-1995 by Franz-Josef Reichert), ** for save: CDDA-Filesystem (© 1994-1995 by Franz-Josef Reichert) ** or/and: ** ** only for save MPEG Layer 2: ** musicin & MPEGTables (FPU required !) ** only for save 8SVX & AIFF (Toshiba & Sony CDROM): ** CDDA 1.12 (Author: mlelstvspecklec.mpifr-bonn.mpg.de) ** only for save ADPCM3 (Toshiba CDROM): ** CDRipper (Author: flowerpeikon.e-technik.tu-muenchen.de) ** save WAV, AIFF, VOC, AU needed Amisox 3.3 ** ** ** Copyright © 1996 Eckhard Ludwig (EMail: Eckhard@top.east.de) ** PlayCDDA_JB.dopus5 is freeware. It may be distributed freely. ** ** Play Audio-CD from DOPUS5, Test Play Audio-CD, Save Tracks to ** MPEG Layer2, RAW, IFF 8SVX, AIFF, WAVE, VOC, AU & ADPCM3. ** For play the samples see PlayHifi.dopus5 ** ** Create new button (CDDA Jukebox), Call as: ** ---------------------------------------------------------------------- ** ARexx DOpus5:ARexx/PlayCDDA_JB.dopus5 {Qp} ** ---------------------------------------------------------------------- ** Set Attribut: "Output to window" (Ausgabe in Fenster). ** */ /*--------S E T T I N G S : --------------------------------------------*/ /* If the file ENV:PlayCDDA_JB.PREFS exists, that one will override the */ /* settings here ... */ /* Path to Jukebox (© 1991-1995 by Franz-Josef Reichert)*/ CDPlay = "WORK:Jukebox/Jukebox" CDDA_FS= "Work:Jukebox/CDDA" Playmodul="Intern" MusikCat="WORK:Jukebox/musiccatalog.cat" Changeint=1 Fontname= "topaz.font" Fontheight=8 Device = "scsi.device" Unit = "3" Fakedmcn="0" Amisox= "C:SOX020" /* Path to MPEG-Encoding */ MPEGENC= "DOpus5:MpegAudio/musicin -b 192 -d c -m j" MPEGTAB= "DOpus5:MpegAudio/Tables" /* Path to CDDA 1.12 */ CDSave = "C:CDDA" /* only for Toshiba/Sony CDROM & save AIFF & IFF 8SVX */ /* Path to CDRipper */ CDRip = "C:CDRipper" /* only for Toshiba CDROM & save ADPCM3 */ /*-Volume Settings-----Auslaufzeit---------------------------------------*/ CDROMVOLUME=0 /* 1 to 255 ? (see doc of your cdrom !) 0 = no volumesetting */ RESTTIME="00:02:00" /* Auslaufzeit eines Titel */ /* For Play, Save over CDDA 1.12 */ /*--end of settings------------------------------------------------------*/ /*--Hauptprogramm--------------------------------------------------------*/ if ~show('l','rexxsupport.library') then call addlib('rexxsupport.library',0,-30,0) if ~openport('playcdda-handler') then exit signal on syntax options results options failat 21 lf='0a'x if open(1,'env:PlayCDDA_JB.prefs','R') then do /* Environment-Variable auswerten */ do i=1 to 16 prefs.i = readln(1) end if prefs.2 ~="" then CDPlay=prefs.2 if prefs.3 ~="" then CDSave=prefs.3 if prefs.4 ~="" then CDRip =prefs.4 if prefs.5 ~="" then CDROMVOLUME=prefs.5 if prefs.6 ~="" then RESTTIME=prefs.6 if prefs.7 ~="" then MusikCat=prefs.7 if prefs.8 ~="" then Device=prefs.8 if prefs.9 ~="" then Unit=prefs.9 if prefs.10 ~="" then Playmodul=prefs.10 if prefs.11 ~="" then Changeint=prefs.11 if prefs.12 ~="" then Fakedmcn=prefs.12 if prefs.13 ~="" then CDDA_FS=prefs.13 if prefs.14 ~="" then Amisox=prefs.14 if prefs.15 ~="" then MPEGENC=prefs.15 if prefs.16 ~="" then MPEGTAB=prefs.16 drop prefs. call close(1) end /* init locale standard=deutsch */ if ~show(l,'locale.library') then call addlib('locale.library',0,-30) if show(l,'locale.library') then catalog=opencatalog('PlayCDDA_JB.catalog','deutsch',0) parse arg portname if portname='' then portname='DOPUS.1' address value portname if Playmodul="Intern" then PLMD=" " else PLMD="PLAYER="Playmodul if ~show('P','JUKEBOX.0') then do /* Jukebox wird gestartet */ if ~exists(CDPlay) then do dopus front dopus request '"'getcatstr(0,'Fehler:'lf'Jukebox nicht gefunden (Pfad: %s ?).'lf'Setze Pfad oder starte Jukebox zuerst !',CDPlay)'"' getcatstr(1,'Beenden') Exit end call pragma("STACK",12000) address command "Run >NIL: "CDPlay" PUBSCREEN=Workbench "PLMD" DEVICE="Device" UNIT="Unit" CHANGEINT="Changeint" CATALOG="MusikCat" FAKEDMCN="Fakedmcn" FONTNAME="Fontname" FONTHEIGHT="Fontheight dopus request '"'getcatstr(20,'Bitte warten !'lf'Der externe CDDA-Player Jukebox wird gestartet.')'"' 'OK' address command 'waitforport JUKEBOX.0' end address 'JUKEBOX.0' TOC 0 /* Test auf PD-Version von Jukebox, siehe result */ if result='freely distributable release' then do address value portname dopus front dopus request '"'getcatstr(2,'Fehler:'lf'Frei verteilbare Version von Jukebox gefunden.'lf'PlayCDDA_JB.dopus5 läuft nur mit der registrierten Version !'lf'Bitte lassen Sie sich für Jukebox registrieren.')'"' getcatstr(1,'Beenden') call closeport('playcdda-handler') Exit end if show(l,'locale.library') then jb_catalog=opencatalog('jukebox.catalog','english',0) cdstring='<no title assigned>' /* CD nicht im Katalog ?, von Jukebox zugeordneten Titel (sprachabhängig) ermitteln */ if jb_catalog~=0 then cdstring=getcatalogstr(jb_catalog,53,cdstring) address value portname lister new /* Opus-Lister wird geöffnet */ handle=result do forever /* Schleife bei CD-Wechsel */ CDDA=0 address 'JUKEBOX.0' MAXTRACK=numtrks() /* letzten Track ermitteln */ if MAXTRACK=0 then call Meldung1 /* Keine CD eingelegt */ STOP CURRENT LABEL /* Label der CD aus Katalog */ cdname=result if cdname='result' then call Ende /* Jukebox wurde beendet */ if cdname=cdstring then cdname=getcatstr(3,'CD nicht im Medienkatalog') address value portname lister set handle title cdname lister set handle sort name /* Lister nach Namen (da Nummern vorangestellt werden) sortieren */ lister set handle busy on lister set handle progress MAXTRACK getcatstr(4,'Erstelle Titelliste ...') lister refresh handle full do i=1 to MAXTRACK lister query handle abort /* welcher Idiot will jetzt abbrechen ?*/ if result then leave lister set handle progress count i lister set handle progress name getcatstr(5,'Titel')' 'i address 'JUKEBOX.0' TOC i if RC>0 then leave /* falls während einlesen CD ausgeworfen wird */ TRACKINFO=result NPOS=pos('22'x,TRACKINFO) /* Trackinfo zerlegen */ SONGNAME=substr(TRACKINFO,NPOS+1,length(TRACKINFO)-NPOS-1) SONGINFO=left(TRACKINFO,NPOS-2) BLOCKS=(left(SONGINFO,2)*60+substr(SONGINFO,4,2))*75+substr(SONGINFO,7,2) BLOCKSIZE=2048 if bittst(right(SONGINFO,2),2)=1 then SONGNAME=getcatstr(6,'Daten Track') /* eine CD mit Datentracks */ else do CDDA=1 /* wenigsten ein Audio-Track sollte drauf sein */ BLOCKSIZE=2352 end j=right(i,2) address value portname lister add handle '"'j" "SONGNAME'" 'BLOCKS*BLOCKSIZE' -1 'i' r 'left(SONGINFO,5)" "substr(SONGINFO,9,20) lister set handle display name size comment lister refresh handle full end address 'JUKEBOX.0' TOC 0 if RC>0 then do /* wurde CD ausgeworfen ? */ address value portname lister set handle busy off lister clear handle lister refresh handle full iterate /* dann an Schleifen-Anfang, wo dies gemeldet wird */ end cdtoc=result /* CD merken für Vergleiche */ address value portname lister set handle busy off if CDDA~=1 then do /* CD nur Datentracks ?*/ lister set handle busy on dopus request '"'getcatstr(21,'Fehler:'lf'CD enthält nur Datentracks !')'"' getcatstr(26,'Beenden|Ok') if RC=1 then do lister set handle busy off call Ende end lister set handle busy off lister clear handle lister refresh handle full iterate end lister set handle handler 'playcdda-handler' 'quotes' /* install traps */ address value portname dopus addtrap copy 'playcdda-handler' dopus addtrap move 'playcdda-handler' dopus addtrap copyas 'playcdda-handler' dopus addtrap moveas 'playcdda-handler' dopus addtrap read 'playcdda-handler' dopus addtrap hexread 'playcdda-handler' dopus addtrap delete 'playcdda-handler' dopus addtrap rename 'playcdda-handler' dopus addtrap devicelist 'playcdda-handler' dopus addtrap parent 'playcdda-handler' dopus addtrap root 'playcdda-handler' dopus addtrap show 'playcdda-handler' dopus addtrap play 'playcdda-handler' dopus addtrap protect 'playcdda-handler' dopus addtrap datestamp 'playcdda-handler' dopus addtrap comment 'playcdda-handler' dopus addtrap makedir 'playcdda-handler' dopus addtrap addicon 'playcdda-handler' dopus addtrap cachelist 'playcdda-handler' do forever if waitpkt('playcdda-handler') then do packet=getpkt('playcdda-handler') if packet='00000000'x then iterate event=getarg(packet,0) handle=getarg(packet,1) titel=getarg(packet,2) user=getarg(packet,3) pathstr=getarg(packet,4) if event="Root" then leave if event="Parent" then leave if event="parent" then leave if event="inactive" then call Ende address 'JUKEBOX.0' CURRENT STATUS if result="NODISC" then leave /* CD wurde vor Play entnommen ! */ TOC 0 if RC>0 then leave if result~=cdtoc then leave /* CD wurde vertauscht ! */ T_FLAG=0 select when event="doubleclick" then call Player when event="Play" then call SelPlay when event="path" then iterate when event="Show" then call CDTest when event="Copy" then call SaveCD when event="Move" then call SaveCD when event="CopyAs" then call SaveCDAs when event="MoveAs" then call SaveCDAs when event="MakeDir" then call CDEject when event="AddIcon" then call CDEject when event="CacheList" then call CDEject when event="dropfrom" then call SaveCD when event="drop" then iterate otherwise call Productinfo end address value portname reply(packet,10) end address 'JUKEBOX.0' CURRENT STATUS if result="NODISC" then leave /* CD wurde während Play entnommen ! */ end address value portname lister clear handle lister refresh handle full end /* Ende Schleife bei CD-Wechsel */ /*---Unterprogramm CD auswerfen------------------------------------------------------------------*/ CDEject: address 'JUKEBOX.0' EJECT return /*---Unterprogramm selektierte Titel spielen-----------------------------------------------------*/ SelPlay: address value portname lister set handle busy on lister query handle selfiles stem files. address 'JUKEBOX.0' LOCKGUI STOP do i=0 to files.count-1 titel=files.i call Player address 'JUKEBOX.0' CURRENT TIME waittime=result CURRENT TRKTIME SUBTIME result RESTTIME trtime=result ADDTIME waittime trtime endtime=result sec=left(trtime,2)*60+substr(trtime,4,2) j=1 address value portname lister set handle progress sec getcatstr(7,'Spiele Audio-CD ... Titel')' 'i+1'/'files.count lister refresh handle full do forever address 'JUKEBOX.0' CURRENT STATUS if result~="PLAY" then leave /* CD wurde entnommen */ CURRENT RELTIME SUBTIME trtime result rsttime=result ADDTIME waittime "00:01:00" waittime=result j=j+1 WAIT TIME waittime address value portname lister set handle progress count j lister set handle progress name left(rsttime,5)' 'substr(files.i,4,25) lister query handle abort if result then do lister set handle busy off lister clear handle progress lister refresh handle full address 'JUKEBOX.0' STOP UNLOCKGUI return end if rsttime < "00:01:00" then do WAIT TIME endtime leave end end address value portname lister select handle '"'files.i'"' off lister clear handle progress lister refresh handle full end lister set handle busy off address 'JUKEBOX.0' STOP UNLOCKGUI return /*---Unterprogramm Play -------------------------------------------------------------------------*/ Player: address 'JUKEBOX.0' SET TRACK left(titel,2) if getcatstr(6,'Daten Track') = substr(titel,4) then return /* Datentrack return */ CURRENT VOLUME RESOLUTION if (CDROMVOLUME<result) & (CDROMVOLUME>0) then do CHANNEL BOTH SET VOLUME CDROMVOLUME CDROMVOLUME end PLAY return /*---Unterprogramm Titel anspielen---------------------------------------------------------------*/ CDTest: address value portname dopus request '"'getcatstr(8,'Audio-CD anspielen:'lf''lf'Die Titel anspielen für wie lang ?')'"' getcatstr(9,'15s|30s|45s|Abbruch') if RC=0 then return if RC=1 then sptime="00:15:00" if RC=2 then sptime="00:30:00" if RC=3 then sptime="00:45:00" address value portname lister set handle busy on lister query handle selfiles stem files. address 'JUKEBOX.0' LOCKGUI STOP do i=0 to files.count-1 titel=files.i call Player address 'JUKEBOX.0' CURRENT TIME waittime=result CURRENT TRKTIME SUBTIME result RESTTIME trtime=result if sptime<trtime then trtime=sptime sec=left(trtime,2)*60+substr(trtime,4,2) j=1 address value portname lister set handle progress sec getcatstr(10,'Spiele Titel kurz an ... Titel')' 'i+1'/'files.count lister refresh handle full do forever address 'JUKEBOX.0' CURRENT STATUS if result~="PLAY" then leave /* CD wurde entnommen */ CURRENT RELTIME SUBTIME trtime result rsttime=result ADDTIME waittime "00:01:00" waittime=result j=j+1 WAIT TIME waittime address value portname lister set handle progress count j lister set handle progress name left(rsttime,5)' 'substr(files.i,4,25) lister query handle abort if result then do lister set handle busy off lister clear handle progress lister refresh handle full address 'JUKEBOX.0' STOP UNLOCKGUI return end if rsttime = "00:00:00" then leave end address value portname lister select handle '"'files.i'"' off lister clear handle progress lister refresh handle full end lister set handle busy off address 'JUKEBOX.0' STOP UNLOCKGUI return /*---Unterprogramm Titel speichern---------------------------------------------------------------*/ SaveCDAs: T_FLAG=1 SaveCD: address 'JUKEBOX.0' INQUIRY CDROM=substr(result,9,4) if showlist("H","CDDA")~=1 & exists(CDDA_FS) then do call pragma("STACK",10000) address command "mount "CDDA_FS /* CDDA Filesystem (Jukebox) mounten */ end address value portname select when CDROM="TOSH" & showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'MP2|8SVX|MONO|AIFF|RAW|WAVE|VOC|AU|ADPCM3|'getcatstr(12,'Abbruch') when CDROM="SONY" & showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'MP2|8SVX|MONO|AIFF|RAW|WAVE|VOC|AU|'getcatstr(12,'Abbruch') when showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'MP2|AIFF|RAW|WAVE|VOC|AU|'getcatstr(12,'Abbruch') when CDROM="TOSH" then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'MP2|8SVX|MONO|AIFF|ADPCM3|'getcatstr(12,'Abbruch') when CDROM="SONY" then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'MP2|8SVX|MONO|AIFF|'getcatstr(12,'Abbruch') otherwise do dopus request '"'getcatstr(17,'Fehler:'lf'CDDA V1.12 unterstützt nur SONY & TOSHIBA CDROM-Laufwerke.'lf'Für NEC, Hitachi, Pioneer, Sanyo etc. bitte das CDDA-Filesystem installieren.')'"' getcatstr(16,'Zurück') return end end SP_FLAG=RC if SP_FLAG=0 then return if CDROM="TOSH" & ((SP_FLAG=5 & showlist("H","CDDA")~=1) | SP_FLAG=9) then do if ~exists(CDRip) then do dopus request '"'getcatstr(14,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm CDRipper (aktueller Pfad %s ) wurde nicht gefunden.',CDRip)'"' getcatstr(16,'Zurück') return end FT=".adpcm3" end else do if (SP_FLAG=1 | SP_FLAG=2 | SP_FLAG=3 | SP_FLAG=4) & (CDROM="TOSH" | CDROM="SONY") then do if ~exists(CDSave) then do dopus request '"'getcatstr(14,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm CDDA V1.12 (aktueller Pfad %s ) wurde nicht gefunden.',CDSave)'"' getcatstr(16,'Zurück') return end call open('file','ENV:CDDA_DEVICE',W) call writech('file',DEVICE) call close ('file') call open('file','ENV:CDDA_UNIT',W) call writech('file',UNIT) call close ('file') end else do if (CDROM~="SONY" & CDROM~="TOSH" & showlist("H","CDDA")=1) & SP_FLAG~=1 then SP_FLAG=SP_FLAG+2 if ~exists(Amisox) & SP_FLAG~=5 then do dopus request '"'getcatstr(15,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm AmiSOX (aktueller Pfad %s ) wurde nicht gefunden.'lf'Wählen Sie Speichern als RAW.',Amisox)'"' getcatstr(16,'Zurück') return end end if SP_FLAG=1 then FT=".mp2" if SP_FLAG=2 then FT=".8svx" if SP_FLAG=3 then FT=".mono" if SP_FLAG=4 then FT=".aiff" if SP_FLAG=5 then FT=".cdr" if SP_FLAG=6 then FT=".wave" if SP_FLAG=7 then FT=".voc" if SP_FLAG=8 then FT=".au" end address 'JUKEBOX.0' STOP LOCKGUI address value portname lister set handle busy on lister set user busy on if event='dropfrom' then do files.count=1 LNG=POS('22'x,titel,2)-1 titel=left(titel,LNG) files.0=right(titel,LNG-1) end else lister query handle selfiles stem files. lister set handle progress files.count getcatstr(18,'Speichere Audiodaten ...') lister refresh handle full lister query user path Zielpfad=result do i=0 to files.count-1 titel=strip(left(substr(files.i,4),24)) tracknr=strip(left(files.i,2),"B"," ") if length(tracknr)=1 then tracknr="0"tracknr if titel=cdstring then titel="track"tracknr address JUKEBOX.0 SET TRACK left(files.i,2) CURRENT BLOCK TRACKSTART=result CURRENT TRKTIME SUBTIME result RESTTIME trtime=result TRACKLEN=left(trtime,2)*4500+substr(trtime,4,2)*75+right(trtime,2) TOC left(files.i,2) TRACKINFO=result NPOS=pos('22'x,TRACKINFO) /* Trackinfo zerlegen */ SONGNAME=substr(TRACKINFO,NPOS+1,length(TRACKINFO)-NPOS-1) ZEIT=left(TRACKINFO,5) address value portname lister set handle progress count i+1 lister set handle progress name titel||FT lister query handle abort if result then leave if getcatstr(6,'Daten Track') ~= substr(files.i,4) then do /* Datentrack überspringen */ if T_FLAG=1 then do command beep dopus getstring '"'getcatstr(13,'Bitte neuen Namen eingeben')'"' 24 '"'titel'"' 'OK|'getcatstr(12,'Abbruch') if DOPUSRC=0 then leave ttitel=result if ttitel~="RESULT" then titel=ttitel lister set handle progress name titel||FT end if (CDROM="TOSH" | CDROM="SONY") then do if FT=".aiff" then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE" if FT=".8svx" then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX" if FT=".mono" then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX MONO" end else do if FT=".aiff" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -taiff "'"'||Zielpfad||titel||FT'"' end if FT=".adpcm3" then address command CDRip||" "||left(files.i,2)||" to "||'"'Zielpfad||titel||FT'"'||" bits=3 Device="||DEVICE||" Unit="||Unit if FT=".cdr" then address command "copy CDDA:track"tracknr" to "'"'||Zielpfad||titel||FT'"'||" QUIET" if FT=".wave" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -twav "'"'||Zielpfad||titel||FT'"' if FT=".voc" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -tvoc "'"'||Zielpfad||titel||FT'"' if FT=".au" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -U -r8000 "'"'||Zielpfad||titel||FT'"' if FT=".mp2" then do call pragma("STACK",40000) address command "setenv MPEGTABLES "||MPEGTAB if (CDROM="TOSH" | CDROM="SONY") then CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel'"'||" MUTE" else Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -taiff "'"'||Zielpfad||titel'"' MPEGENC" "'"'||Zielpfad||titel'"'" "'"'||Zielpfad||titel||FT'"' "Delete >NIL: "'"'||Zielpfad||titel'"' end if (CDROM="TOSH" | CDROM="SONY") & (FT=".aiff" | FT=".8svx" | FT=".mono" | FT=".mp2") then ZEIT=left(trtime,5) address command "FILENOTE >NIL: "'"'Zielpfad||titel||FT'"'" "'"'ZEIT" "left(cdname,32,'20'x)" "SONGNAME'"' end address value portname lister select handle '"'files.i'"' off lister refresh handle full end lister set handle busy off lister set user busy off lister read user Zielpfad force lister refresh user full address 'JUKEBOX.0' UNLOCKGUI return /*---Unterprogramm Copyright---------------------------------------------------------------------*/ Productinfo: address 'JUKEBOX.0' INQUIRY CDROM=substr(result,9) CURRENT LABEL cdlabel=result CURRENT CDTIME cdgesamt=result GETATTR VERSION FULL Jukeversion=result GETATTR PROJECT FILENAME Projekt=result GETATTR PLAYER Playmod=result address value portname do forever dopus request '"'getcatstr(19,'Über')' PlayCDDA_JB.dopus5 V1.5:'lf'Copyright ©1996 Eckhard Ludwig'lf'Freely distributable release'lf''lf''Jukeversion'"' getcatstr(23,'Beenden|Über CDROM|Über MP2|Hilfe|Ok') if RC=0 then return if RC=1 then call Ende if RC=2 then dopus request '"'"CDROM="CDROM||lf"Player="Playmod||lf"Device="Device" Unit="Unit||lf||lf||"Project="Projekt||lf||getcatstr(24,'CD Katalogtitel=%s'lf'CDDA Gesamtspieldauer=%s',cdlabel,cdgesamt)'"' getcatstr(16,'Zurück') if RC=4 then dopus request '"'getcatstr(22,'PlayCDDA_JB.dopus5 Kurzhilfe:'lf'Mutterverzeichnis: CD neu einlesen'lf'Doppelklick: Spielen ab geklickten Titel'lf'Abspielen: Spiele alle selektierten Titel'lf'Anzeigen: Spiele alle selektierten Titel kurz an'lf'Kopieren: Selektierte Titel speichern'lf'Schublade: CD auswerfen')'"' getcatstr(16,'Zurück') if RC=3 then do POS1=pos("-m",MPEGENC) if POS1>0 then CM=substr(MPEGENC,POS1+3,1) POS1=pos("-d",MPEGENC) if POS1>0 then DE=substr(MPEGENC,POS1+3,1) POS1=pos("-b",MPEGENC) if POS1>0 then BitR=substr(MPEGENC,POS1+3,3) else BitR="382" select when CM="d" then CMode="Dual channel" when CM="j" then CMode="Joint stereo" when CM="m" then CMode="Single channel" otherwise CMode="Stereo" end select when DE="5" then DEE="50/15 microsec" when DE="c" then DEE="CCITT j.17" otherwise DEE="None" end dopus request '"'"MPEG Encoder Configuration:"lf"Layer = 2"lf"Channel Mode = "CMode||lf"Total bitrate = "BitR" kbps"lf"De-emphasis = "DEE'"' getcatstr(16,'Zurück') end end /*---Unterprogramm Audio-CD einlegen-------------------------------------------------------------*/ Meldung1: address value portname dopus request '"'getcatstr(25,'Fehler:'lf'Bitte eine Audio-CD einlegen')'"' getcatstr(26,'Beenden|Ok') if RC=1 then call Ende do i= 1 to 90 /* wait max 90sec */ address value portname lister query handle busy /* wurde inzwischen Lister geschlossen ?*/ if RC>0 then leave address 'JUKEBOX.0' MAXTRACK=numtrks() if MAXTRACK>0 then return WAIT ABSOLUTE '00:01:00' end /*---Unterprogramm Programm beenden--------------------------------------------------------------*/ Ende: address value portname lister close handle dopus remtrap '*' 'playcdda-handler' call closeport('playcdda-handler') address 'JUKEBOX.0' if CDDA=1 then EJECT exit /*---Unterprogramm Tracks ermitteln--------------------------------------------------------------*/ numtrks: TOC stem names. if rc=0 then return(names.0-1) else return(0) /*---Unterprogramm Lokalisierung (Dank an Edmund Vermeulen)--------------------------------------*/ getcatstr: parse arg msgno,msgstring,insert.1,insert.2 if catalog~=0 then msgstring=getcatalogstr(catalog,msgno,msgstring) j=0 do while pos('%s',msgstring)>0 parse var msgstring fore '%s' aft j=j+1 msgstring=fore||insert.j||aft end return msgstring /*---Unterprogramm Syntaxfehler------------------------------------------------------------------*/ syntax: if rc=13 then call Ende /* Jukebox wurde über GUI beendet */ say 'Syntax Error' rc',' errortext(rc) 'in line' sigl'.' return